#ifndef __FACTORY1_HPP__
#define __FACTORY1_HPP__

#include "abstract_factory.hpp"
#include "producta1.hpp"
#include "productb1.hpp"

class Factory1: public AbstractFactory {
public:
	Factory1() {cout<<__func__<<endl;}
	~Factory1() {cout<<__func__<<endl;}
	AbstractProductA *createProductA();
	AbstractProductB *createProductB();
};

inline AbstractProductA *Factory1::createProductA()
{
	cout<<__func__<<endl;
	a1 = new ProductA1();
	return a1;
}

inline AbstractProductB *Factory1::createProductB()
{
	cout<<__func__<<endl;
	b1 = new ProductB1();
	return b1;
}

#endif /* end of include guard */
